package csel.model;

import java.util.ArrayList;
import java.util.List;

public class Inventory implements java.io.Serializable
{
	private static final long serialVersionUID = 1L;
	protected ArrayList<EquippableItem> equippableItems = new ArrayList<EquippableItem>();
	protected ArrayList<UseableItem> useableItems = new ArrayList<UseableItem>();

	public Inventory()
	{

	}

	public Inventory(ArrayList<UseableItem> useableItem,
			ArrayList<EquippableItem> equippableItem)
	{
		this.useableItems = useableItem;
		this.equippableItems = equippableItem;
	}

	public boolean addEquippableItem(EquippableItem e)
	{
		equippableItems.add(e);
		return (true);
	}

	public boolean addUseableItem(UseableItem u)
	{
		useableItems.add(u);
		return (true);
	}

	public EquippableItem dropEquippableItem(EquippableItem e)
	{
		Tile potentialDropSite = e.getCarriedBy().getLocation();
		if(potentialDropSite.getItem()==null)
		{
			if (equippableItems.remove(e))
			{
				potentialDropSite.setItem(e);
				e.setLocation(potentialDropSite);
				return (e);
			}
		}
		return null;
	}

	public UseableItem dropUseableItem(UseableItem u)
	{
		Tile potentialDropSite = u.getCarriedBy().getLocation();
		if(potentialDropSite.getItem()==null)
		{
			if (useableItems.remove(u))
			{
				potentialDropSite.setItem(u);
				u.setLocation(potentialDropSite);
				return (u);
			}
		}
		return null;
	}

	public List<UseableItem> getUseableItems()
	{
		return useableItems;
	}

	public List<EquippableItem> getEquippableItems()
	{
		return equippableItems;
	}

}
